Client licenses for an application, utility or other computer program may be purchased in bulk in some computing environments. For example, a company or other organization may provide a licensed program to employees for use on multiple different computing devices, which may be stationary (e.g., desktop computers, workstations) and/or mobile (e.g., personal digital assistants, laptop computers). Typically, for every license the organization owns, its employees can actively use one copy of the program.
In some computing environments, each individual license is loaded or installed on a particular device, and thus is only exercised when the program is executed on that device. This lack of portability inhibits redistribution or reallocation of the organization's licenses as employees migrate within the organization (or leave), and complicates the replacement or upgrade of existing computing equipment.
To alleviate problems associated with such static licensing schemes, licenses for some programs may reside or be installed on one or more controllers or computer servers, and be allocated to users as needed (e.g., on demand). In these environments, the licenses are dynamically assigned when clients boot or start the associated program, and returned to the controllers when not in use. These computing environments are more flexible, in that any client or user can employ any of the organization's licenses, up to the maximum number of licenses owned by the organization.
However, if all licenses are loaded on one controller or licensing server, and it fails or otherwise becomes unavailable, all users may lose access to the program. Even if multiple controllers are employed, with each controller responsible for allocating a separate pool of the organization's licenses, use of a subset of the licenses may be lost in the event a controller becomes unavailable.